#include <iostream>
using namespace std;

// 定义顺序表结构体
const int MAX_SIZE = 100;
typedef struct {
    int data[MAX_SIZE];
    int length;
} SqList;

// 初始化顺序表
void InitList(SqList &L) {
    L.length = 0;
}

// 在顺序表末尾插入元素
void ListInsert(SqList &L, int e) {
    if (L.length < MAX_SIZE) {
        L.data[L.length++] = e;
    }
}

// // 删除有序顺序表中的重复元素
void DeleteDuplicates(SqList &L) {    
    if (L.length == 0) {
        return;
    }
    int k=0;
    for (int i = 1; i < L.length; i++)
    {
        if (L.data[i]==L.data[i-1])
        {
            k++;
        }
        L.data[i-k]=L.data[i];
    }
    L.length=L.length-k;
    
    // int i = 0, j = 1;
    // while (j < L.length) {
    //     if (L.data[i]!= L.data[j]) {
    //         L.data[++i] = L.data[j];
    //     }
    //     j++;
    // }
    // L.length = i + 1;
}


// 输出顺序表元素
void PrintList(SqList L) {
    for (int k = 0; k < L.length; k++) {
        cout << L.data[k] << " ";
    }
    cout << endl;
}

int main() {
    SqList L;
    InitList(L);
    ListInsert(L, 1);
    // ListInsert(L, 1);
    ListInsert(L, 2);
    ListInsert(L, 3);
    ListInsert(L, 3);
    ListInsert(L, 4);
    ListInsert(L, 4);
    ListInsert(L, 4);
    cout << "原顺序表元素: ";
    PrintList(L);
    DeleteDuplicates(L);
    cout << "删除重复元素后的顺序表元素: ";
    PrintList(L);

    return 0;
}